perm filename SEC1[DOC,BGB] blob sn#093415 filedate 1974-03-27 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00008 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	~I0,0λ15FA
C00004 00003	~I0,0P1λ13FA
C00008 00004	1.7	Control, Meta, and Meta-Control Keys.
C00013 00005	1.12	The Extended Command Scanner.
C00015 00006	1.13	The Stack.
C00020 00007	1.17	Making a Cube Explicitly.
C00024 00008	1.19	Text Commands of GEOMED 1973.
C00027 ENDMK
C⊗;
~I0,0;λ15;FA

~JC;FBCONTENTS.
~JA;FA

PART I  -  GEOMED AS AN INTERACTIVE DRAWING PROGRAM.

	1.0	PRIMER.
	2.0	EXAMPLES.
	3.0	GEOMETRIC COMMANDS.
	4.0	TOPOLOGICAL COMMANDS.
	5.0	INPUT/OUTPUT COMMANDS.
	6.0	EDITOR CONTROL COMMANDS.
	7.0	DISPLAY CONTROL COMMANDS.
	8.0	FILE FORMATS.
 	9.0	COMMAND SUMMARY BY LEXICAL ORDER.

PART II - GEOMED AS A SAIL OR LISP ACCESSIBLE GRAPHICS COMMAND LANGUAGE.

	1.0	A SIMPLE EXAMPLE.
	2.0	LINK AND DATUM ACCESSING.
	3.0	WINGED EDGE PRIMITIVES.
	4.0	EULER MAKE PRIMITIVES.
	5.0	EULER KILL PRIMITIVES.
	6.0	EASY POLYHEDRON ROUTINES.
	7.0	EUCLIDEAN TRANSFORMATIONS.
	8.0	GEOMETRIC MEASURE ROUTINES.
	9.0	BODY INTERSECTION AND CUTTING.
       10.0	IMAGE FORMATION ROUTINES.
       11.0	INPUT/OUTPUT ROUTINES.
       12.0	AUXILLARY ROUTINES: DISPLAY AND ARITHMETIC.

PART III - INTERNAL GEOMED DOCUMENTATION.

	1.0	DESCRIPTION OF SOURCE FILES.
	2.0	HOW TO ASSEMBLE AND LOAD GEOMED.
	3.0	HOW TO ASSEMBLE AND LOAD GEOMES.
	4.0	HOW TO ASSEMBLE AND LOAD GEOMEL.
	5.0	SUBROUTINE CALLING CONVENTION.
~I0,0;P1;λ13;FA
~JC;FA SECTION 1

~JC;FBPRIMER
~JU;FA
1.1	Purpose.

	GEOMED is for  making drawings,  synthetic video  images, and
3-D geometric models for the sake of computer vision.

1.2	Running GEOMED.

	The system  copy of GEOMED  is started  by typing "R  GEOMED"
carriage  return  at  a CRT  display  console  (rather  than a  video
console). The program will display a rectangle,  type an asterisk and
await single  character commands. Typing additional  carriage returns
will yield more asterisks showing that GEOMED is alive and listening.

1.3	Instant Cube.

	Typing the character  "∞", calls a  macro that makes  a cube.
Adjust the pots on the display console so that the cube looks right.

1.4	Translation.
~JA;λ5;F.
	   Type the character ":" to move the cube right  (positive x axis).
	   Type the character ";" to move the cube left   (negative x axis).
	   Type the character ")" to move the cube up     (positive y axis).
	   Type the character "(" to move the cube down   (negative y axis).
	   Type the character "*" to move the cube nearer (positive z axis).
	   Type the character "-" to move the cube away   (negative z axis).
~JU;λ13;F.
	Clearly  these command  characters  are not  mnemonics,  they
were  chosen  because  they  do  not  require  the  TOP key  and  are
conveniently grouped in pairs under one's right hand.

1.5	Strength of Translation.

	The distance the cube is moved on  each command is called the
strength  of translation or TDEL.  The value of TDEL  is displayed in
the upper right corner of the  screen and is initially one foot.  The
strength of translation is halved by typing the command character "/"
or doubled by typing "\".

1.6	World Frame of Reference.

	The direction the  cube moved was  with respect to  the world
frame  of reference which is  a right handed coordinate  system.  The
initial camera is  positioned looking down  the Z  axis at the  world
origin. The  world origin is  in the center  of the display  screen a
simulated sixteen feet away; and the positive world X axis is to your
right; and the positive world Y axis is upwards.
1.7	Control, Meta, and Meta-Control Keys.

	Notice that the Stanford A.I. keyboard  has four "shift" keys
labeled SHIFT, TOP,  META & CONTROL. SHIFT only determines whether an
alphabetic letters is upper or lower case; GEOMED converts lower case
letters into upper so  that the SHIFT key has no  effect. The TOP key
allows  two ASCII character  codes to  be on each  physical key, this
doubling up on  the physical  keys is not  important to GEOMED  since
"TOP-E"  can always  be  referred to  as  "@".   Finally,   of  great
importance, the CONTROL and META keys add two extra bits to the 7-bit
ASCII code,  so that  a 9-bit character is formed.   In this document
the characters "α",  "β" and "ε" will be used as prefix abbreviations
for  CONTROL,    META   and  META-CONTROL  keying  of  a   character.
Furthermore,   the command scanner  accepts the characters "α",   "β"
and "ε" as prefix modifiers that will add the appropriate control and
meta bits to the next character typed.

1.8	Question Mark "?" Prefix.

	Typing  the  question  mark  charcter  "?"  followed  by  any
character will type a one line reminder  of what commands are invoked
by that character.

1.9	Rotation.

	The  rotation  command  characters  are  the  same   as   for
translation  except  you must hold the CONTROL key down or prefix the
command with an "α". Try rotating the instant cube about  the  X-axis
with  "α:".  The positive direction of rotation is counter-clockwise.
The negative direction of rotation is clockwise.

1.10	Strength of Rotation.

	The strength of rotation is named RDEL,  the value of RDEL is
displayed  in  two formats  in the  upper  right hand  corner  of the
screen: as a  pi fraction and in  degrees,  minutes,   seconds.   The
initial value of RDEL is π/4,  45 degrees.  Analogous to translation,
the  strength  of rotation  is  halved or  doubled by  "α/"  and "α\"
respectively.

1.11	Rotation Default.

	Since a sequence of rotations is quite common, there is a way
to  make the CTRL key  be sticky. The  usual Euclidean transformation
default is translation world frame; but after typing the  "@" command
character, the Euclidean default is rotation world frame. Translation
default  is  restored by  typing  "!".   The state  of  the Euclidean
transformation default is also  displayed in the status in  the upper
right hand corner of the screen. (The "≡" command disables the status
display, "≡" toggles).
1.12	The Extended Command Scanner.

	The X-commands are executed  by typing "X" followed by  the first
three letters of a mnemonic (further letters are ignored) followed by
any necessary arguments.  The command is terminated by a  RETURN. The
arguments  may  be separated  by  any  reasonable delimiters:  space,
comma,   etc.  The following three "X" commands provide easy creation
of simple polyhedra:

	X CUBE <DX width>,<DY height>,<DZ depth>
	X BALL <radius>,<M longitudes>,<N latitudes>
	X CYLN <radius>,<N sides>,<DZ length>

	The CUBE command  makes a right rectangular prism  with width
height and depth  as given.  The BALL command makes a polyhedron that
approximates a  sphere. The  CYLN command  makes a  right prism  that
approximates a circular cylinder.

~L0,-350;*FIG1;F.
1.13	The Stack.

	GEOMED commands  take their  arguments from  and leave  their
results in a push  down stack of bodies,  faces,  edges and vertices.
The contents of the stack are displayed on the left hand side  of the
display screen.   Having made a  cube, you will  have a B1 in  the stack;
making  a second cube will  push a B2 into the  stack. To retrieve B1
use the  "↑" stack  pop or  the "α↑" stack  rotate up  or "α↓"  stack
rotate down  or "↔" the  swap top of  stack command. The  "↓" command
pushs the stack down and  places in the new  top the entity that  was
previously  top  of  stack.

1.14	The Face, Edge and Vertex Rings.

	A polyhedron consists  of three circular double  linked lists
(called rings); there is  a ring of faces, a ring of edges and a ring
of vertices. The head of each ring is the body node. The rings can be
traveled by  using the commands "<"  and ">" to go  forwards and back
through the face ring, the commands "≤" and  "≥" for the edge ring, and
the commands  "∨" and "∧"  for the  vertex ring.  Notice that when  a
face,  edge  or  vertex  node   is  in  the  top  of  the  stack  the
corresponding entity is intensified in the drawing. 

1.15	Hidden Line Elimination.

	Typing ALT-MODE causes your drawing  to be displayed with its
hidden lines eliminated;
as is illustrated by the two pictures of a log cabin in the woods.
To stay in hidden line display mode use the
"_" underbar command;  the "β_" returns the  display mode default  to
display all the lines. The hidden line eliminator, named OCCULT, does
not display overlapping  polyhedra or  concave faces correctly; and  for the
sake of  speed it  does not  check for these  cases. The  faces of  a
polyhedra can be forced convex  by applying the "$" command to a body
or a face.











1.16	Parts Tree Structure - The Attach and Detach Commands.

	The parts' tree commands "A"
ATTACH and and "D" DETACH, allow  bodies to be connected into a  tree
structure without affecting  their faces, edges or  vertices. The "A"
attach command  links the body in the top of the stack to the body in
the second  stack position  as a  sub-part  (or child).   The  detach
command unlinks  a body from  its parent. Certain  operations such as
the  Euclidean  transformations   apply  to  a   body  and  all   its
descendents.
~X0.45;L-315,-330;*HIDE1.PLT;L315,-330;*HIDE2.PLT;X1.0;F.
1.17	Making a Cube Explicitly.

	After "∞" and  "X CUBE", a third way  to draw a cube  will be
given to illustrate  the primitive topology commands. Starting with a
fresh copy of GEOMED,  type the command letters in the  second column
to get the advertised results:
~λ5;JA;F.
	1.	V	Vertex body creation.
	2.	:)	Position the vertex into the first quadrant.
	3.	S;;	Make an edge and vertex and move left.
	4.	S((	Edge vertex down.
	5.	S::	Edge vertex right.
	6.	J↑	Join the first and last vertices of the wire.
	7.	*	Pull the face lamina towards you.
	8.	S	Sweep the square face into a very thin solid.
	9.	--↑	Move the face away from you giving the cube depth.
	10.	@/):!	Rotate the cube to a more familiar position.
~λ15;JU;F.

	Three commands  that  have not  been mentioned  yet are:  "V"
vertex body creation,  "S" Sweep and "J" join two vertices with a new
edge. The "V" command takes no arguments and pushs a brand  new body,
face and  vertex into  the stack.   This degenerate  point polyhedron
satisfies  the Euler equation F-E+V=2 (1-0+1=2)  and is always placed
at the world origin.  The first three sweep  commands in the example,
sweep  a vertex polyhedron  into a  wire polyhedron  by adding  a new
vertex and a new edge; incidentally preserving Euler's equation as do
all GEOMED  commands.  The  wire-sweep takes  a Vertex argument,  and
returns  the new vertex.   The new vertex  has the same  locus as the
argument vertex. After three sides of a square have been formed,  the
"J" command creates a  new face and a new edge  between the first and
last vertex  of the wire face.  The wire-join case of the "J" command
takes a vertex argument  and identifies it as  the end of a  wire and
knows  enough to  fetch the  other end  of that  wire, as  its second
argument.



1.18	Making a Solid of Rotation.



	A solid  of rotation  can be  made by  sweeping a  wire  face
around and closing it  with the "R" command. For example  a dumbell
shaped object is formed by typing the following commands:

~λ5;JA;F.
	1.	V(((((:		Get Vertex  to starting position.
	2.	S:)S)S;)S)))) 	Lower bell.
	3.	S:)S)S;)↑ 	Upper Bell.
	4.	7@S(R!↑  	Rotate wire about  Y-axis and complete solid.
~λ15;JU;L375,500;*CUBE.PLT;L250,-300;*DUMBEL.PLT;F.
1.19	Text Commands of GEOMED 1973.

	Towards the end  of 1973, text  nodes and text  commands were
added  to GEOMED  to demonstrate its  potential value  for mechanical
drawing.   This work  was  done  by Tovar  Mock,   and  the
resulting alternate version  of GEOMED is available on  the system as
the program named "G".

	Text  nodes are  created  (or edited)  by  applying the  "T"
command  with a vertex in  the top of  stack.
The header of a text node list is called  a Y-node
and can be reached from a text node by the "≤" command; Y-nodes carry
their  own  3-D space  locus  and so  can  be moved  about  using the
Euclidean transformation. The resulting data structures can only be
save and restored by means  of the "εO" and "εI" commands, which 
dump and restore D3D files. The D3D format 
I/O doesn't exist in  present GEOMED. The  "T"
command, accepts text by  means of an editor resembling  the system's
editors  TV  and E;  whcih use the  system line  edit  commands. The
particular line edit mode commands of G are:

	<CR>	Forward 1 line
	<VT>	Backward 1 line

	αε>	Forward 4 lines
	αε<	Backward 4 lines
	αε≥	Forward 16 lines
	αε≤	Backward 16 lines

	εD	Delete a line
	εI	Enter line insert mode
	αZ	Concatenate next line with current line

	αεE	Return to GEOMED
	αεV	Update display
	αε/	Shrink character size.
	αε\	Expand character size.

	The best way to get a labeled drawing into hardcopy is to "P"
plot is out of  G into a plot file, ".PLT"; and then to use PLTVEC to
output the drawing on  the Cal Comp Plotter or  to use XAP to  output
the drawing to the XGP, Xerox Graphics Printer. See section 5.2,
for details on how to make hardcopy drawings.